home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / xwindows / demos / xfract_1.z / xfract_1 / xfractint-1.06 / cmdfiles.c < prev    next >
C/C++ Source or Header  |  1992-09-28  |  62KB  |  2,029 lines

  1. /*
  2.     Command-line / Command-File Parser Routines
  3.     This module is linked as an overlay, use ENTER_OVLY and EXIT_OVLY.
  4. */
  5.  
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include <float.h>
  10. #include <ctype.h>
  11. #include <time.h>
  12. #ifndef XFRACT
  13. #include <bios.h>
  14. #endif
  15. #include "fractint.h"
  16. #include "fractype.h"
  17. #ifdef __TURBOC__
  18. #include <dir.h>
  19. #endif
  20. #include "prototyp.h"
  21.  
  22. #ifdef XFRACT
  23. #define DEFAULT_PRINTER 5    /* Assume a Postscript printer */
  24. #define PRT_RESOLUTION  100    /* Assume medium resolution    */
  25. #define INIT_GIF87      0    /* Turn on GIF 89a processing  */
  26. #else
  27. #define DEFAULT_PRINTER 2    /* Assume an IBM/Epson printer */
  28. #define PRT_RESOLUTION  60    /* Assume low resolution       */
  29. #define INIT_GIF87      0    /* Turn on GIF 89a processing  */
  30. #endif
  31.  
  32. static int  cmdfile(FILE *,int);
  33. static int  next_command(char *,int,FILE *,char *,int *,int);
  34. static int  next_line(FILE *,char *,int);
  35. int  cmdarg(char *,int);
  36. static void argerror(char *);
  37. static void initvars_run(void);
  38. static void initvars_restart(void);
  39. static void initvars_fractal(void);
  40. static void initvars_3d(void);
  41. static void reset_ifs_defn(void);
  42. static void parse_textcolors(char *value);
  43. static int  parse_colors(char *value);
  44. static int  parse_printer(char *value);
  45.  
  46. /* variables defined by the command line/files processor */
  47. int        showdot;    /* color to show crawling graphics cursor */
  48. char    temp1[256];        /* temporary strings        */
  49. char    readname[80];        /* name of fractal input file */
  50. char    gifmask[13] = {""};
  51. char    PrintName[80]={"fract001.prn"}; /* Name for print-to-file */
  52. char    savename[80]={"fract001"};      /* save files using this name */
  53. char    autoname[80]={"auto.key"};      /* record auto keystrokes here */
  54. int    potflag=0;        /* continuous potential enabled? */
  55. int    pot16bit;        /* store 16 bit continuous potential values */
  56. int    gif87a_flag;        /* 1 if GIF87a format, 0 otherwise */
  57. int     dither_flag;        /* 1 if want to dither GIFs */
  58. int    askvideo;        /* flag for video prompting */
  59. char    floatflag;
  60. int    biomorph;        /* flag for biomorph */
  61. int    usr_biomorph;
  62. int    forcesymmetry;        /* force symmetry */
  63. int    showfile;        /* zero if file display pending */
  64. int    rflag, rseed;        /* Random number seeding flag and value */
  65. int    decomp[2];        /* Decomposition coloring */
  66. int    distest;
  67. int    distestwidth;
  68. char overwrite = 0;    /* 0 if file overwrite not allowed */
  69. int    soundflag;        /* 0 if sound is off, 1 if on */
  70. int    basehertz;        /* sound=x/y/x hertz value */
  71. int    debugflag;        /* internal use only - you didn't see this */
  72. int    timerflag;        /* you didn't see this, either */
  73. int    cyclelimit;        /* color-rotator upper limit */
  74. int    inside;         /* inside color: 1=blue     */
  75. int    fillcolor;         /* fillcolor: -1=normal     */
  76. int    outside;        /* outside color    */
  77. int    finattract;        /* finite attractor logic */
  78. int    display3d;        /* 3D display flag: 0 = OFF */
  79. int    overlay3d;        /* 3D overlay flag: 0 = OFF */
  80. int    init3d[20];        /* '3d=nn/nn/nn/...' values */
  81. int    initbatch;        /* 1 if batch run (no kbd)  */
  82. unsigned initsavetime;        /* autosave minutes        */
  83. double    initorbit[2];        /* initial orbitvalue */
  84. char    useinitorbit;        /* flag for initorbit */
  85. int    initmode;        /* initial video mode        */
  86. int    initcyclelimit;     /* initial cycle limit        */
  87. BYTE usemag;        /* use center-mag corners   */
  88. int    bailout;        /* user input bailout value */
  89. double    inversion[3];        /* radius, xcenter, ycenter */
  90. int    rotate_lo,rotate_hi;    /* cycling color range        */
  91. int far *ranges;        /* iter->color ranges mapping */
  92. int    rangeslen = 0;        /* size of ranges array     */
  93. char far *mapdacbox = NULL;    /* map= (default colors)    */
  94. int    colorstate;        /* 0, dacbox matches default (bios or map=) */
  95.                 /* 1, dacbox matches no known defined map   */
  96.                 /* 2, dacbox matches the colorfile map        */
  97. int    colorpreloaded;     /* if dacbox preloaded for next mode select */
  98. extern int Targa_Overlay;
  99. int Targa_Out = 0;
  100. char    colorfile[80];        /* from last <l> <s> or colors=@filename    */
  101. int functionpreloaded; /* if function loaded for new bifs, JCO 7/5/92 */
  102.  
  103. /* TARGA+ variables */
  104. int    TPlusFlag;        /* Use the TARGA+ if found  */
  105. int    MaxColorRes;        /* Default Color Resolution if available */
  106. int    PixelZoom;        /* TPlus Zoom Level */
  107. int    NonInterlaced;        /* Non-Interlaced video flag */
  108.  
  109. /* 3D Transparency Variables, MCP 5-30-91 */
  110. double xcoord, ycoord, zcoord, tcoord;
  111. double zzmin, zzmax;        /* initial depth corner values */
  112. double ttmin, ttmax;        /* initial time coordinates */
  113. int Transparent3D, SolidCore, MultiDrawing;
  114. int tpdepth, tptime;
  115. unsigned CoreRed, CoreGreen, CoreBlue, NumFrames;
  116.  
  117. /* AntiAliasing variables, MCP 6-6-91 */
  118. int AntiAliasing, Shadowing;
  119.  
  120. int    orbitsave = 0;        /* for IFS and LORENZ to output acrospin file */
  121. int orbit_delay;                /* clock ticks delating orbit release */
  122. extern    int invert;
  123. extern int fractype;        /* fractal type         */
  124. extern double param[4];     /* initial parameters        */
  125. extern double xxmin,xxmax;    /* initial corner values    */
  126. extern double yymin,yymax;    /* initial corner values    */
  127. extern double xx3rd,yy3rd;    /* initial corner values    */
  128. extern char usr_stdcalcmode;    /* '1', '2', 'g', 'b'       */
  129. extern int maxit;        /* max iterations        */
  130. extern int usr_periodicitycheck; /* periodicity checking  1=on,0=off */
  131. extern char usr_floatflag;    /* flag for float calcs */
  132. extern int usr_distest;     /* nonzero if distance estimator option */
  133. extern char color_lakes;    /* finite attractor flag */
  134. extern int haze;
  135. extern int RANDOMIZE;
  136. extern int Ambient;
  137. extern char light_name[];
  138. extern int BRIEF;
  139. extern int RAY;
  140.  
  141. extern BYTE back_color[];
  142. extern BYTE dacbox[256][3];
  143. extern struct videoinfo far videotable[];
  144. extern int fpu;
  145. extern int iit;
  146.  
  147. extern double potparam[];    /* potential parameters  */
  148. extern int Printer_Resolution, LPTNumber,
  149.        Printer_Type, Printer_Titleblock,
  150.        Printer_ColorXlat, Printer_SetScreen,
  151.        Printer_SFrequency, Printer_SAngle, Printer_SStyle,
  152.        Printer_RFrequency, Printer_RAngle, Printer_RStyle,
  153.        Printer_GFrequency, Printer_GAngle, Printer_GStyle,
  154.        Printer_BFrequency, Printer_BAngle, Printer_BStyle,
  155.        Printer_Compress,
  156.        EPSFileType, ColorPS,
  157.        Print_To_File,Printer_CRLF;        /* for printer functions */
  158.  
  159. int    transparent[2];     /* transparency min/max values */
  160. int    LogFlag;        /* Logarithmic palette flag: 0 = no */
  161.  
  162. BYTE exitmode = 3;    /* video mode on exit */
  163.  
  164. extern int video_type;
  165. extern int svga_type;           /* for forcing a specific SVGA adapter */
  166. extern int mode7text;
  167. extern int textsafe;
  168. extern int vesa_detect;
  169. char    ai_8514;    /* Flag for using 8514a afi JCO 4/11/92 */
  170.  
  171. int        bios_palette;        /* set to 1 to force BIOS palette updates */
  172. int        escape_exit;         /* set to 1 to avoid the "are you sure?" screen */
  173.  
  174. extern int   viewwindow;
  175. extern float viewreduction;
  176. extern int   viewcrop;
  177. extern float finalaspectratio;
  178. extern int   viewxdots,viewydots;
  179.  
  180. extern char MAP_name[];
  181. extern int mapset;
  182.  
  183. extern int eyeseparation; /* Occular Separation */
  184. extern int glassestype;
  185. extern int xadjust; /* Convergence */
  186. extern int yadjust;
  187. extern int xtrans, ytrans; /* X,Y shift with no perspective */
  188. extern int red_crop_left, red_crop_right;
  189. extern int blue_crop_left, blue_crop_right;
  190. extern int red_bright, blue_bright;
  191. extern char showbox; /* flag to show box and vector in preview */
  192. extern char preview;        /* 3D preview mode flag */
  193. extern int previewfactor; /* Coarsness */
  194.  
  195. int first_init=1;        /* first time into cmdfiles? */
  196. static int init_rseed;
  197. static char initcorners,initparams;
  198. struct fractalspecificstuff far *curfractalspecific;
  199.  
  200. char FormFileName[80];        /* file to find (type=)formulas in */
  201. char FormName[ITEMNAMELEN+1];    /* Name of the Formula (if not null) */
  202. char LFileName[80];        /* file to find (type=)L-System's in */
  203. char LName[ITEMNAMELEN+1];    /* Name of L-System */
  204. char CommandFile[80];        /* file to find command sets in */
  205. char CommandName[ITEMNAMELEN+1];/* Name of Command set */
  206. char CommandComment1[57];    /* comments for command set */
  207. char CommandComment2[57];
  208. char IFSFileName[80];        /* file to find (type=)IFS in */
  209. char IFSName[ITEMNAMELEN+1];    /* Name of the IFS def'n (if not null) */
  210. float far *ifs_defn = NULL;    /* ifs parameters */
  211. int  ifs_changed;        /* nonzero if parameters have been edited */
  212. int  ifs_type;            /*